home *** CD-ROM | disk | FTP | other *** search
/ Aminet 40 / Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso / Aminet / misc / emu / ATUtilities.lha / ATUtilities / ATPrefs.c < prev    next >
C/C++ Source or Header  |  2000-09-26  |  7KB  |  261 lines

  1. /* ******************************************************************* */
  2. /* **                                                               ** */
  3. /* **                     ATKeyboard Version 3.0                    ** */
  4. /* **              Copright (C) 1992 by Thomas Dreibholz            ** */
  5. /* **                       All rights reserved                     ** */
  6. /* **                                                               ** */
  7. /* **                         AT Preferences                        ** */
  8. /* **                                                               ** */
  9. /* ******************************************************************* */
  10.  
  11. #define COLOR_VIDEO  (1<<4)
  12. #define MONO_VIDEO   (1<<3)
  13. #define SERIAL_PORT  (1<<0)
  14. #define SEGMENT_A000 (1<<5)
  15. #define SEGMENT_D000 (1<<6)
  16. #define SEGMENT_E000 ((1<<5)|(1<<6))
  17. #define SEGMENT_NONE 0
  18. #define ATP_UNUSED   ((1<<7)|(1<<2)|(1<<1))
  19.  
  20. #define ITEM_VIDEO 0
  21. #define SUBITEM_MONO 0
  22. #define SUBITEM_COLOR 1
  23. #define ITEM_ADRESSE 1
  24. #define SUBITEM_A000 0
  25. #define SUBITEM_D000 1
  26. #define SUBITEM_E000 2
  27. #define SUBITEM_NONE 3
  28. #define ITEM_SERIAL 2
  29. #define ITEM_ATPLADEN 4
  30. #define ITEM_ATPSICHERN 5
  31. #define ITEM_ATPSETZEN 6
  32. #define SUBITEM_SYSTEM 0
  33. #define SUBITEM_SIDECAR 1
  34.  
  35. extern struct MenuItem  Color_Item;
  36. extern struct MenuItem  Mono_Item;
  37. extern struct MenuItem  A000_Item;
  38. extern struct MenuItem  D000_Item;
  39. extern struct MenuItem  E000_Item;
  40. extern struct MenuItem  None_Item;
  41. extern struct MenuItem  SerialPort_Item;
  42. extern struct Menu      Menu1;
  43. extern struct Window   *WindowPtr;
  44.  
  45. UBYTE ColorVideo=0,
  46.       MonoVideo=0,
  47.       SerialPort=0,
  48.       Segment=SEGMENT_D000;
  49.  
  50.  
  51. /* Einstellungen zeigen */
  52. VOID ZeigeATP(byte,menue)
  53.  UBYTE byte;
  54.  BOOL  menue;
  55. {
  56.  if(byte & COLOR_VIDEO) ColorVideo=COLOR_VIDEO; else ColorVideo=0;
  57.  if(byte & MONO_VIDEO) MonoVideo=MONO_VIDEO; else MonoVideo=0;
  58.  if(byte & SERIAL_PORT) SerialPort=SERIAL_PORT; else SerialPort=0;
  59.  Segment=SEGMENT_NONE;
  60.  if(byte & SEGMENT_D000) Segment=SEGMENT_D000;
  61.  if(byte & SEGMENT_A000) Segment=SEGMENT_A000;
  62.  if((byte & SEGMENT_A000) && (byte & SEGMENT_D000)) Segment=SEGMENT_E000;
  63.  if(menue==TRUE) ClearMenuStrip(WindowPtr);
  64.  if(ColorVideo) Aktiv(&Color_Item); else Inaktiv(&Color_Item);
  65.  if(MonoVideo) Aktiv(&Mono_Item); else Inaktiv(&Mono_Item);
  66.  if(SerialPort) Aktiv(&SerialPort_Item); else Inaktiv(&SerialPort_Item);
  67.  if(Segment==SEGMENT_A000) { Inaktiv(&D000_Item); Inaktiv(&E000_Item); Aktiv(&A000_Item); Inaktiv(&None_Item); }
  68.  if(Segment==SEGMENT_D000) { Inaktiv(&A000_Item); Inaktiv(&E000_Item); Aktiv(&D000_Item); Inaktiv(&None_Item); }
  69.  if(Segment==SEGMENT_E000) { Inaktiv(&D000_Item); Inaktiv(&A000_Item); Aktiv(&E000_Item); Inaktiv(&None_Item); }
  70.  if(Segment==SEGMENT_NONE) { Inaktiv(&D000_Item); Inaktiv(&A000_Item); Inaktiv(&E000_Item); Aktiv(&None_Item); }
  71.  if(menue==TRUE) SetMenuStrip(WindowPtr,&Menu1);
  72. }
  73.  
  74.  
  75. /* Lese Einstellungen aus Dual Ported RAM */
  76. VOID LiesATP()
  77. {
  78.  UBYTE byte;
  79.  
  80.  byte=GetJanusPrefs();
  81.  ZeigeATP(byte,FALSE);
  82. }
  83.  
  84.  
  85. /* Lade Einstellungen */
  86. BOOL LadeATP(dir,req)
  87.  UBYTE *dir;
  88.  BOOL   req;
  89. {
  90.  UBYTE                       byte;
  91.  register struct FileHandle *fh;
  92.  
  93.  fh=Open(dir,MODE_OLDFILE);
  94.  if(fh!=NULL)
  95.   {
  96.    Read(fh,&byte,1L);
  97.    Close(fh);
  98.    ZeigeATP(byte,req);
  99.   }
  100.  else
  101.   {
  102.    if(req==TRUE)
  103.     {
  104.      Requester("Die Datei \"2500prefs\" konnte","nicht geöffnet werden.","Okay",NULL);
  105.     }
  106.    return(FALSE);
  107.   }
  108.  return(TRUE);
  109. }
  110.  
  111.  
  112. /* Prefs sichern */
  113. VOID SichereATP(dir,req)
  114.  UBYTE *dir;
  115.  BOOL   req;
  116. {
  117.  UBYTE                       byte;
  118.  register struct FileHandle *fh;
  119.  
  120.  fh=Open(dir,MODE_NEWFILE);
  121.  if(fh!=NULL)
  122.   {
  123.    byte=ColorVideo+MonoVideo+SerialPort+Segment+ATP_UNUSED;
  124.    Write(fh,&byte,1L);
  125.    SetJanusPrefs(&byte);
  126.    Close(fh);
  127.   }
  128.  else
  129.   {
  130.    if(req==TRUE)
  131.     {
  132.      Requester("Die Datei \"2500prefs\" konnte","nicht geschrieben werden.","Okay",NULL);
  133.     }
  134.   }
  135. }
  136.  
  137.  
  138. #asm
  139. * Prefs an Janus senden
  140.    public _SetJanusPrefs
  141.    public _GetJanusPrefs
  142.    public _JanusBase
  143. _SetJanusPrefs:
  144.    move.l _JanusBase,a6
  145.    move.l 46(a6),a0
  146.    move.l 4(sp),a6
  147.    move.b (a6),8183(a0)
  148.    rts
  149. _GetJanusPrefs:
  150.    move.l _JanusBase,a6
  151.    move.l 46(a6),a0
  152.    move.b 8183(a0),d0
  153.    ext.w d0
  154.    ext.l d0
  155.    rts
  156. #endasm
  157.  
  158.  
  159. /* AT-Preferences-Verwaltung */
  160. VOID ATPrefs(item,sub)
  161.  WORD item,sub;
  162. {
  163.  UBYTE byte,ok;
  164.  
  165.  switch(item)
  166.   {
  167.    case ITEM_ADRESSE:
  168.      ClearMenuStrip(WindowPtr);
  169.      switch(sub)
  170.       {
  171.        case SUBITEM_A000:
  172.          Aktiv(&A000_Item);
  173.          Inaktiv(&D000_Item);
  174.          Inaktiv(&E000_Item);
  175.          Inaktiv(&None_Item);
  176.          Segment=SEGMENT_A000;
  177.         break;
  178.        case SUBITEM_D000:
  179.          Aktiv(&D000_Item);
  180.          Inaktiv(&A000_Item);
  181.          Inaktiv(&E000_Item);
  182.          Inaktiv(&None_Item);
  183.          Segment=SEGMENT_D000;
  184.         break;
  185.        case SUBITEM_E000:
  186.          Aktiv(&E000_Item);
  187.          Inaktiv(&D000_Item);
  188.          Inaktiv(&A000_Item);
  189.          Inaktiv(&None_Item);
  190.          Segment=SEGMENT_E000;
  191.         break;
  192.        case SUBITEM_NONE:
  193.          Inaktiv(&E000_Item);
  194.          Inaktiv(&D000_Item);
  195.          Inaktiv(&A000_Item);
  196.          Aktiv(&None_Item);
  197.          Segment=SEGMENT_NONE;
  198.         break;
  199.       }
  200.      SetMenuStrip(WindowPtr,&Menu1);
  201.     break;
  202.    case ITEM_VIDEO:
  203.      switch(sub)
  204.       {
  205.        case SUBITEM_COLOR:
  206.          if(Color_Item.Flags & CHECKED) ColorVideo=COLOR_VIDEO; else ColorVideo=0;
  207.         break;
  208.        case SUBITEM_MONO:
  209.          if(Mono_Item.Flags & CHECKED) MonoVideo=MONO_VIDEO; else MonoVideo=0;
  210.         break;
  211.       }
  212.     break;
  213.    case ITEM_SERIAL:
  214.      if(SerialPort_Item.Flags & CHECKED) SerialPort=SERIAL_PORT; else SerialPort=0;
  215.     break;
  216.    case ITEM_ATPLADEN:
  217.      ok=0;
  218.      switch(sub)
  219.       {
  220.        case SUBITEM_SYSTEM:
  221.          LadeATP("SYS:PC/System/2500prefs",TRUE);
  222.          ok=1;
  223.         break;
  224.        case SUBITEM_SIDECAR:
  225.          LadeATP("SYS:Sidecar/2500prefs",TRUE);
  226.          ok=1;
  227.         break;
  228.       }
  229.      if(ok)
  230.       {
  231.        byte=ColorVideo+MonoVideo+SerialPort+Segment+ATP_UNUSED;
  232.        SetJanusPrefs(&byte);
  233.       }
  234.     break;
  235.    case ITEM_ATPSICHERN:
  236.      ok=0;
  237.      switch(sub)
  238.       {
  239.        case SUBITEM_SYSTEM:
  240.          SichereATP("SYS:PC/System/2500prefs",TRUE);
  241.          ok=1;
  242.         break;
  243.        case SUBITEM_SIDECAR:
  244.          SichereATP("SYS:Sidecar/2500prefs",TRUE);
  245.          ok=1;
  246.         break;
  247.       }
  248.      if(ok)
  249.       {
  250.        byte=ColorVideo+MonoVideo+SerialPort+Segment+ATP_UNUSED;
  251.        SetJanusPrefs(&byte);
  252.       }
  253.     break;
  254.    case ITEM_ATPSETZEN:
  255.      byte=ColorVideo+MonoVideo+SerialPort+Segment+ATP_UNUSED;
  256.      SetJanusPrefs(&byte);
  257.     break;
  258.   }
  259. }
  260.  
  261.